//postgresql-contrib-8.4
//#sudo su postgres
//#cd /usr/share/postgres/8.2/contrib/
//#psql –d postgres -f pgcrypto.sql

//senha como bytea

//INSERT INTO pessoa(email, codendereco, telefone, telefone2, login, senha) VALUES ('juniormj1@globo.com', 2, '1111-2121', '', 'juniormj',encrypt('Junior','fooz','aes'));
//select *, decrypt(senha, 'fooz','aes') from pessoa;   ---> Lista todos usuários
//select *, decrypt(senha, 'fooz','aes') from pessoa where login = 'juniormj';   --> lista filtrada

package Teste;

import java.sql.SQLException;
import java.util.Iterator;
import java.util.Vector;

import javax.swing.JOptionPane;

import basicas.Endereco;
import basicas.PessoaFisica;
import basicas.PessoaJuridica;
import colecoes.ColEndereco;
import colecoes.ColPessoaFisica;
import colecoes.ColPessoaJuridica;
import colecoes.ValidaCpf;

public class Main {

/*	static Vector vetorTest = new Vector();*/
	public static void main(String[] args) throws ClassNotFoundException,
			SQLException {
		String retorno = JOptionPane.showInputDialog(" 1 - Cadastrar: "
				+ "\n 2 - Editar: \n 3 - Remover: \n 4 - Listar Tudo:"
				+ "\n 5 - Lista personalizada: \n 6 - Consultarr: \n");

		int opcao = Integer.parseInt(retorno);

		switch (opcao) {
		case 1:
			cadastrar();
			break;

		case 2:
			editar();
			break;

		case 3:
			remover();
			break;

		case 4:
			listar();
			break;

		case 5:
			listarNomes();
			break;

		case 6:
			consultar();
			break;

		case 7:
			maximo();
		}
	}

/*	public static void main(String args[]){
		ColPessoaFisica copf = new ColPessoaFisica();
		try {
			vetorTest =  copf.listarPessoaFisica();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}*/
	/* ###### Metodos ##### */

	
	private static void cadastrar() throws ClassNotFoundException, SQLException {

		ColPessoaFisica col = new ColPessoaFisica();
		PessoaFisica pf = new PessoaFisica();
		ValidaCpf cpf = new ValidaCpf();
		ColEndereco n = new ColEndereco();

		// boolean valido;
		String email = "anderson@globo.com";
		int codigo = n.valorDoEndereco();
		System.out.println(codigo);
		String telefone = "1111-2222";
		String telefone2 = "3333-5555";
		String dt = "1975-10-07";
		java.sql.Date dtN = java.sql.Date.valueOf(dt);
		String sexo = "M";
		String CPF = "96380101500";
		// col.verificaCpfExiste(CPF);
		// valido = cpf.validacpf(CPF);
		// if (!valido) {
		// JOptionPane.showConfirmDialog(null,"    Ops....  Este CPF Está Inválido  !!!!","Atenção",
		// JOptionPane.CLOSED_OPTION,JOptionPane.WARNING_MESSAGE);
		// } else {

		String nome = "Anderson Carlos";
		String login = "anderson";
		String senha = "anderson10";

		Endereco end = new Endereco();
		end.setCodEndereco(codigo);

		pf.setEmail(email);
		pf.setEnd(end);
		pf.setTelefone(telefone);
		pf.setTelefone2(telefone2);
		pf.setDataNascimento(dtN);
		pf.setSexo(sexo);
		pf.setCpf(CPF);
		pf.setNome(nome);
		pf.setLogin(login);
		pf.setSenha(senha);
		col.cadastrarPessoaFisica(pf);
		// }

	}

	private static void editar() throws ClassNotFoundException, SQLException {
		ColPessoaFisica pf = new ColPessoaFisica();
		ValidaCpf cpf = new ValidaCpf();

		// boolean valido;
		int codigo = 10;
		String email = "anderson@globo.com";
		String telefone = "1111-1111";
		String telefone2 = "2222-2222";
		String dt = "1975-10-07";
		java.sql.Date dtN = java.sql.Date.valueOf(dt);
		String sexo = "M";
		String CPF = "";
		// pf.verificaCpfExiste(CPF);
		// valido = cpf.validacpf(CPF);
		// if (!valido) {
		// JOptionPane.showConfirmDialog(null,"    Ops....  Este CPF Está Inválido  !!!!","Atenção",
		// JOptionPane.CLOSED_OPTION,JOptionPane.WARNING_MESSAGE);
		// } else {

		String nome = "Anderson Carlos";
		String login = "anderson";
		String senha = "anderson10";
		pf.editarPessoaFisica(codigo, email, telefone, telefone2, dtN, sexo,
				CPF, nome, login, senha);
		// }
	}

	private static void remover() throws ClassNotFoundException, SQLException {
		ColPessoaJuridica pf = new ColPessoaJuridica();
		int codigo = 2;

		pf.removerPessoaJuridica(codigo);
	}

	private static void listar() throws ClassNotFoundException, SQLException {
		Vector lst = new Vector();
		ColPessoaFisica ps = new ColPessoaFisica();
		lst = ps.listarPessoaFisica();

		Iterator consulta = lst.iterator();
		System.out.println("--------------------------");
		System.out.println("     Dados do Cliente      \n\n");
		while (consulta.hasNext()) {
			PessoaFisica p = (PessoaFisica) consulta.next();
			System.out.println("E-mail       : " + p.getEmail());
			System.out.println("Endereço     : " + p.getEnd().getCodEndereco());
			System.out.println("Bairro       : " + p.getEnd().getBairro());
			System.out.println("Cidade       : " + p.getEnd().getCidade());
			System.out.println("Telefone     : " + p.getTelefone());
			System.out.println("Celular      : " + p.getTelefone2());
			System.out.println("Nome         : " + p.getNome());
			System.out.println("      ----------------\n");
		}
	}
	
	private static void listarNomes() throws ClassNotFoundException,
			SQLException {
		Vector lst = new Vector();
		ColPessoaFisica ps = new ColPessoaFisica();
		lst = ps.consultaFisicaFiltrada("m");

		Iterator consulta = lst.iterator();
		System.out.println("--------------------------");
		System.out.println("     Dados do Cliente      \n\n");
		while (consulta.hasNext()) {
			PessoaFisica p = (PessoaFisica) consulta.next();
			System.out.println("ID      : " + p.getCodFisica());
			System.out.println("Nome    : " + p.getNome());
			System.out.println("E-mail  : " + p.getEmail());
			System.out.println("Sexo    : " + p.getSexo());
			System.out.println("Endereço: " + p.getEnd().getLogradouro());
			System.out.println("Bairro  : " + p.getEnd().getBairro());
			System.out.println("Cidade  : " + p.getEnd().getCidade());
			System.out.println("CEP     : " + p.getEnd().getCep());
			System.out.println("      ----------------\n");
		}
	}

	private static void consultar() throws ClassNotFoundException, SQLException {
		int codigo = 6;
		ColPessoaJuridica col = new ColPessoaJuridica();
		PessoaJuridica pf = new PessoaJuridica();

		pf = col.consultaPessoaJuridica(codigo);

		System.out.println("     Dados do Cliente      \n\n");
		System.out.println("E-mail       : " + pf.getEmail());
		System.out.println("Endereco     : " + pf.getEnd().getLogradouro());
		System.out.println("Bairro       : " + pf.getEnd().getBairro());
		System.out.println("Cidade       : " + pf.getEnd().getCidade());
		System.out.println("Telefone     : " + pf.getTelefone());
		System.out.println("Celular      : " + pf.getTelefone2());
		System.out.println("Razao Social : " + pf.getRazaoSocial());
		System.out.println("Nome Fantasia: " + pf.getNomeFantasia());
		System.out.println("CNPJ         : " + pf.getCnpj());
		System.out.println("Nome         : " + pf.getNomeContrato());
		System.out.println("      ----------------\n");
	}

	public static void maximo() {
		ColEndereco n = new ColEndereco();
		int codigo = 0;
		try {
			codigo = n.valorDoEndereco();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		System.out.println(codigo);
	}

}
